////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __WN_CORE_FUNCTIONS_H__
#define __WN_CORE_FUNCTIONS_H__

#include "WNCore/inc/WNPlatform.h"
#include "WNCore/inc/WNTypes.h"

WN_INLINE WN_BOOL WNIsPowerOfTwo(WN_UINT64 _x);

WN_INLINE WN_VOID WNPauseConsole();

template <typename Type> WN_BOOL WNIsValid(Type _value);
template <WN_VOID*> WN_BOOL WNIsValid(WN_VOID* _value);
template <WN_CHAR*> WN_BOOL WNIsValid(WN_CHAR* _value);
template <WN_UINT32> WN_BOOL WNIsValid(WN_UINT8 _value);
template <WN_UINT16> WN_BOOL WNIsValid(WN_UINT16 _value);
template <WN_UINT32> WN_BOOL WNIsValid(WN_UINT32 _value);
template <WN_UINT64> WN_BOOL WNIsValid(WN_UINT64 _value);

#include "WNCore/inc/WNFunctions.inl"

#endif // __WN_CORE_FUNCTIONS_H__